build: define "move-if-changed" make macro.
authorIan Campbell <ian.campbell@citrix.com>
Thu, 14 Jul 2011 12:22:35 +0000 (13:22 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 14 Jul 2011 12:22:35 +0000 (13:22 +0100)
Use it to replace various places which (should) use the
if ! cmp -s ...; then mv ....; fi
pattern.

Also add an else clause to cleanup the unchanged temporary file.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Jackson <ian.jackson.citrix.com>
Config.mk
tools/libxl/Makefile

index da27c26aaf05fe8b2c4623833737bc6ef68d4f02..29d72c720ebe7183461dff3bc70102d58383059d 100644 (file)
--- a/Config.mk
+++ b/Config.mk
@@ -118,6 +118,16 @@ define buildmakevars2shellvars
     export XEN_ROOT="$(XEN_ROOT)"
 endef
 
+#
+# Compare $(1) and $(2) and replace $(2) with $(1) if they differ
+#
+# Typically $(1) is a newly generated file and $(2) is the target file
+# being regenerated. This prevents changing the timestamp of $(2) only
+# due to being auto regenereated with the same contents.
+define move-if-changed
+       if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi
+endef
+
 buildmakevars2file = $(eval $(call buildmakevars2file-closure,$(1)))
 define buildmakevars2file-closure
     .PHONY: genpath
@@ -134,7 +144,7 @@ define buildmakevars2file-closure
        echo "XEN_SCRIPT_DIR=\"$(XEN_SCRIPT_DIR)\"" >> $(1).tmp;           \
        echo "XEN_LOCK_DIR=\"$(XEN_LOCK_DIR)\"" >> $(1).tmp;               \
        echo "XEN_RUN_DIR=\"$(XEN_RUN_DIR)\"" >> $(1).tmp;                 \
-       if ! cmp $(1).tmp $(1); then mv -f $(1).tmp $(1); fi
+       $(call move-if-changed,$(1).tmp,$(1))
 endef
 
 ifeq ($(debug),y)
index 0c9162f919a53eb82821623728eeed99d7580cad..78434fe804e4b5cbd965fd43e911c33e5563d7ce 100644 (file)
@@ -75,7 +75,8 @@ $(eval $(genpath-target))
 
 _libxl_paths.h: genpath
        sed -e "s/\([^=]*\)=\(.*\)/#define \1 \2/g" $@.tmp >$@.2.tmp
-       if ! cmp -s $@.2.tmp $@; then mv -f $@.2.tmp $@; fi
+       rm -f $@.tmp
+       $(call move-if-changed,$@.2.tmp,$@)
 
 libxl_paths.c: _libxl_paths.h
 
@@ -85,8 +86,8 @@ $(LIBXL_OBJS) $(LIBXLU_OBJS) $(XL_OBJS): libxl.h
 
 _libxl_%.h _libxl_%.c: libxl.idl gen%.py libxl%.py
        $(PYTHON) gen$*.py libxl.idl __libxl_$*.h __libxl_$*.c
-       mv __libxl_$*.h _libxl_$*.h
-       mv __libxl_$*.c _libxl_$*.c
+       $(call move-if-changed,__libxl_$*.h,_libxl_$*.h)
+       $(call move-if-changed,__libxl_$*.c,_libxl_$*.c)
 
 libxenlight.so: libxenlight.so.$(MAJOR)
        ln -sf $< $@